package com.dc.wifi.main.utils;

import android.content.Context;
import android.media.MediaPlayer;

import com.dc.wifi.R;
import com.dc.wifi.main.DCApplication;

import java.util.Timer;
import java.util.TimerTask;

public class LoopingAudioPlayer {
    private MediaPlayer mediaPlayer;
    private Timer timer;
    private long interval; // 播放间隔时间，单位为毫秒

    public LoopingAudioPlayer(Context context) {
        mediaPlayer = MediaPlayer.create(context, R.raw.ddd);
        mediaPlayer.setLooping(true); // 设置循环播放
        interval = 0; // 默认没有间隔
        timer = new Timer();
    }

    /**
     * 开始播放音频
     */
    public void play() {
        if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
            mediaPlayer.start();
        }
    }

    /**
     * 停止播放音频，并重置MediaPlayer
     */
    public void stop() {
        if (mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer.reset();
            mediaPlayer.release();
            mediaPlayer = MediaPlayer.create(DCApplication.getInstance(), R.raw.ddd);
            mediaPlayer.setLooping(true);
        }
        if (timer != null) {
            timer.cancel();
            timer = new Timer();
        }
    }

    /**
     * 设置播放间隔时间
     * @param newInterval 新的间隔时间，单位为毫秒
     */
    public void setInterval(long newInterval) {
        interval = newInterval;
        if (mediaPlayer.isPlaying()) {
            stop(); // 停止当前播放
            play(); // 重新开始播放
        }
    }

    /**
     * 播放音频并根据间隔时间计划下一次播放
     */
    private void scheduleNextPlay() {
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                if (mediaPlayer.isPlaying()) {
                    stop();
                    play();
                }
            }
        }, interval, interval);
    }

    /**
     * 启动定时器，根据间隔时间播放音频
     */
    public void startWithInterval() {
        if (interval > 0) {
            scheduleNextPlay();
        }
    }

    /**
     * 释放资源
     */
    public void release() {
        if (mediaPlayer != null) {
            mediaPlayer.release();
        }
        if (timer != null) {
            timer.cancel();
        }
    }
}